#include "file_compare.h"

// 逐字节对比文件（仅在此处实现，避免重复定义）
int compare_files(const char* file1, const char* file2) {
    int fd1 = open(file1, O_RDONLY);
    int fd2 = open(file2, O_RDONLY);
    if (fd1 == -1 || fd2 == -1) {
        perror("文件打开失败");
        return -1;
    }

    char c1, c2;
    ssize_t ret1, ret2;
    int flag = 1;  // 1-相同，0-不同

    while (1) {
        ret1 = read(fd1, &c1, 1);
        ret2 = read(fd2, &c2, 1);

        if (ret1 != ret2) {  // 大小不同
            flag = 0;
            break;
        }
        if (ret1 == 0) break;  // 正常结束
        if (ret1 == -1 || ret2 == -1) {  // 读取出错
            perror("读取错误");
            flag = -1;
            break;
        }
        if (c1 != c2) {  // 内容不同
            flag = 0;
            break;
        }
    }

    close(fd1);
    close(fd2);
    return flag;
}

// 对比模块入口（必须实现）
void file_compare_menu() {
    char file1[256], file2[256];
    printf("\n===== 文件校验 =====");
    printf("\n文件1路径: ");
    scanf("%s", file1);
    printf("文件2路径: ");
    scanf("%s", file2);

    int result = compare_files(file1, file2);
    if (result == 1) {
        printf("结果: 两个文件完全相同\n");
    } else if (result == 0) {
        printf("结果: 两个文件不同\n");
    } else {
        printf("校验失败，请检查文件\n");
    }
}
